在上一個篇章提到了零知識證明的三大特性,所以基本上能涵蓋到那三大特性的,都可以被稱作為零知識證明,因此零知識證明範圍相當廣泛,但是零知識證明要證明的問題卻有所限制,有什麼限制呢?簡單的來說,零知識證明所要證明的問題必須得要符合以下兩種特性,他們分別是 「很難被解出」 以及 「很容易被驗證」 。為什麼呢?讓我來一一說明吧!
我們先想想如果要證明的題目很容易被解出,會發生什麼事情?你會發現這個命題根本沒有需要被證明的必要,一旦這個命題你會解、我會解、獨眼龍也會解的時候,能解出這個命題所代表的事實並沒有任何意義,就像是我今天不會隨隨便便的跑去跟別人講說:「嘿嘿,你知道嗎?我有一個對於x+5=8這個式子求出x的方法喔!」我相信如果我這麼做,可能很快就會被帶進精神病院,為了避免我會被送進精神病院,我們對於要證明的命題必須得要將難度升高才行,那能將問題難度提高到多難?讓我們來看下一個特性。
我們當然不能無限制提高要證明問題的難度啊!這個問題必須得要非常容易就可以被驗證。為什麼呢?因為命題的難度一旦超過難以被驗證,就算是我真的提出證明了,驗證我證明的人收到我的證明後,便會跟我說:「你等我一下喔,我來驗證你的證明。」基本上當我收到這句話時,就差不多是我跟他的最後一句對話了,因為接下來他會瘋狂算、拚命算,直到他能成功驗證我的證明,然而那一天,卻因為我的證明難以被驗證,而無法到來。
基於以上兩個特性,我們可以找出適合被拿來做零知識證明的命題,接著就可以開始我們的零知識證明了,接下來我會拿一個符合上述兩個條件的命題作為例子,開始進行零知識證明的探討,但在那之前,因為該問題裡面會用到的技術對於一個小白來說,可能會不太懂,所以我會花兩天的時間進行補充,所以該怎麼進行零知識證明就要等到大後天才能揭曉了,那麼我們明天見!